package com.soen6441.generics;
class MethodBounds {
    // generic type comes before return type
    <T extends Doable> void doSomethingWithT(T t){
        t.doSomething();
    }

    <T extends Printer & Doable> void print(T t){
        t.print();
    }

    <T extends PrinterDoable> void method1(ClassBounds<T> cb){
    }

    // wildcard says I don't care about
    // type could be anything that extends PrinterDoable
    void method2(ClassBounds<? extends PrinterDoable> cb){
    }
}
